package me.caofeng.dao;

import me.caofeng.enums.CheckStatus;
import me.caofeng.pojo.CartItem;
import me.caofeng.pojo.Carts;
import org.apache.ibatis.annotations.Param;
import org.omg.CORBA.INTERNAL;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * Copyright © 2017曹峰. All rights reserved.
 *
 * @Prject: mall
 * @Package: me.caofeng.dao
 * @Description:
 * @Author: 曹峰 blog.caofeng.me
 * @Date: 2017-06-25 16:25
 * @Version: V1.0
 */
@Repository
public interface CartMapper {
    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/25 20:38
     * @Description: 添加新商品
    */
    int addCart(CartItem cartItem);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/25 20:39
     * @Description: 获取购物车内所有商品
     * @param userId 用户id
    */
    List<CartItem> getCarts(@Param("userId") String userId);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/25 20:40
     * @Description: 获取购物车商品详细信息
     * @param productId  商品id
    */
    CartItem getCartProductId(@Param("productId") Integer productId, @Param("userId") String userId);

    CartItem getCartById(@Param("id") Integer id,@Param("userId") String userId);
    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/6/25 20:38
     * @Description: 更新购物车商品数量
     * @param id  购物车商品id
     * @param quantity 新的商品数量
    */
    int updateQuantity(@Param("id") Integer id , @Param("quantity") int quantity,
                       @Param("userId") String userId);

    int deleteCartItem(@Param("id") Integer id , @Param("userId") String userId);

    int updateCartItemStatus(@Param("id") Integer id, @Param("userId") String userId,
                             @Param("status") CheckStatus status);

    int updateCartsStatus(@Param("userId") String userId,@Param("status") CheckStatus status);

    /**
     * @Author:曹峰 blog.caofeng.me
     * @Date: 2017/7/3 12:05
     * @Description: 清空购物车
     * @param userId 用户id
    */
    int clearCart(String userId);

}
